/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo.persistencia;

import java.util.*;
import java.sql.*;
import modelo.ICandidato;
import modelo.IEmpleado;
import modelo.personas;
/**
 *
 * @author LEONIC
 */
public class CandidatoDAO implements ICandidatoDAO{

    public void create(ICandidato candidato) {
        String sql = "insert into personas(dni,nombre,salario,tarea,rol,empleado,cod_tienda,usuario,password,pluses) values (?,?,?,?,?,?,?,?,?,?)";
        try {
            PreparedStatement stm = Persistencia.createConnection().prepareStatement(sql);
            stm.setString(1, candidato.getDNI());
            stm.setString(2, candidato.getNombre());
            stm.setDouble(3, 0);
            stm.setString(4, "0");
            stm.setString(5, "candidato");
            stm.setBoolean(6, false);
            stm.setInt(7, 0);
            stm.setString(8, "");
            stm.setString(9, "");
            stm.setDouble(10, 0);

            stm.execute();
            System.out.println (sql);
        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
    }

    public ICandidato read(String dni) {
        ICandidato c = null;
        try {
            Statement stmt = Persistencia.createConnection().createStatement();
            ResultSet res = stmt.executeQuery("SELECT dni,nombre FROM personas where dni=" + dni);
            String nombre;
            if (res.next()) {
                nombre = res.getString("nombre");
                c = new personas(dni,nombre);
            }

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
        return c;
    }

    public void update(ICandidato candidato) {
        String sql=null;
          sql = "UPDATE personas SET nombre = ? WHERE dni = ?";

          try {
            PreparedStatement stm = Persistencia.createConnection().prepareStatement(sql);
            stm.setString(1, candidato.getNombre());
            stm.setString(2, candidato.getDNI());

            stm.execute();

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
    }

    public void contratar(IEmpleado candidato) {
        String sql=null;
          sql = "UPDATE personas SET salario = ?, rol = ?, empleado = ?, usuario = ?, password = ? WHERE dni = ?";

          try {
            PreparedStatement stm = Persistencia.createConnection().prepareStatement(sql);
            stm.setDouble(1, candidato.getSalario());
            stm.setString(2, candidato.getRol());
            stm.setBoolean(3, true);
            stm.setString(4, candidato.getUsuario());
            stm.setString(5, candidato.getPassword());
            stm.setString(6, candidato.getDNI());

            stm.execute();

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
    }

    public void delete(ICandidato candidato) {
        String sql = "DELETE FROM personas WHERE dni = ?";
        try {
            PreparedStatement stm = Persistencia.createConnection().prepareStatement(sql);
            stm.setString(1, candidato.getDNI());

            stm.execute();

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
    }

    public List<ICandidato> list() {
        List<ICandidato> candidatos = new ArrayList<ICandidato>();

        try {
            Statement stmt = Persistencia.createConnection().createStatement();
            ResultSet res = stmt.executeQuery("SELECT * FROM personas where empleado=false ");
            String nombre, dni;
            boolean defecto;
            while (res.next()) {

                dni = res.getString("dni");
                nombre = res.getString("nombre");
                candidatos.add(new personas(dni, nombre));
            }

        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            Persistencia.closeConnection();
        }
        return candidatos;
    }
}
